// pages/game/game.js
//time倒计时的时间
var TIME = 10;
Page({


  // 非常重要 ※※※
  //只有写在 data 里面的属性 才能在wxml中使用
  //才可以使用 数据双向绑定的功能
  data: {
    /*表示 色块行数的 属性*/ 
    row:2,
    //盛放色块详细信息的数组
    items:[],
    //倒计时的时间
    time: TIME,
    score:0,//分数
    step:0//步数
  },
  // 初始化页面调用 onload
  //可以在 这个函数 初始化 不在wxml 中使用的属性
  onLoad:function(){
    this.width = 750;
    this.getDevicewidth();
    this.gameCore();
   
    //初始化titles的数组
    this.titles = ["小白","嫌犯", "色狼", "超级色狼", "色鬼", "超级色鬼","色狂"];
    
    //获取标签的下标
    this.titleIndex = 0;
  },
  //游戏的核心部分
  gameCore:function(){

    //计算每一个色块的间距
    var tempColorViewWidth = this.width/this.data.row;//平均分的 临时色块宽度
    var space = tempColorViewWidth*0.1;//计算后的间距

    //色块的宽度=（总宽度-总间距）/一行有多少色块
    var allspace = space * (this.data.row+1);//总间距
    var colorViewWidth = (this.width - allspace)/this.data.row;

    // 获取随机的颜色
    var color = this.randColor();

    // 设置特殊颜色是哪个色块
    var allNums = this.data.row * this.data.row;
    var spacialIndex = parseInt(Math.random()*allNums);

    //
    var tempList = [];
    //循环创建色块的信息 放入数组
    for(var i = 0;i<allNums;i++){
      var info = {
        width: colorViewWidth,
        color:color,
        space:space,
        opactity: i == spacialIndex?0.7:1
      }
      tempList.push(info);
    }
    this.setData({
      items: tempList
    });
  },

  //随机颜色的函数
  randColor:function(){
    // var r = parseInt(math.random()*256)随机0-255之间的整数
    var r = parseInt(Math.random() * 256);
    var g = parseInt(Math.random() * 256);
    var b = parseInt(Math.random() * 256);
    
    return "rgb("+r+","+g+","+b+")";
  },

  //获取设备的宽度
  getDevicewidth:function(){
    wx.getSystemInfo({
      success: function(res) {
        this.width = res.windowWidth;
      }.bind(this)
    })
  },

  success:function(){
    //成功时候 更新行数row的值
    //如果做难度扩展 可以添加专门改变this.data.row的值的函数
    this.setData({
      row:++this.data.row,
      step:++this.data.step,
      time:TIME
    });
    //走两步 给一分
    if(this.data.step%2 == 0){
      this.setData({
        score:++this.data.score
      });
    }
    //就是走六步过一关 六步是3分 三分除以三余1 就是过一关
    if (this.data.step % 3 == 0) {
      ++this.titleIndex;
    }
    //防止数组越界
    if (this.titleIndex >= this.titles.length) {
      this.titleIndex = this.titles.length - 1;
    }

  },
  getTitles:function(){
   
    return this.titles[this.titleIndex];
  },
  //失败时候
  fail:function(){
  //重置时间状态、行数
    this.setData({
      row:2,
      score:0,
      time: TIME
    });
   
    
    clearInterval(this.timer);

    wx.showModal({
      title: '温馨提示',
      content: '你已经被警方锁定，你就是被追查的' + this.getTitles()+',是否重新检测！',//暂时写死 后面根据等级的名字提示
      showCancel: true,
      cancelText: '去自首',
      cancelColor: 'red',
      confirmText: '继续检测',
      confirmColor: 'orange',
      success: function(res) {
        console.log(res);
        //点击 去自首  返回上一页
        //点击 继续检测 重新开始游戏
        res.cancel?this.back():this.reStartGame();
      }.bind(this)
    })
    this.titleIndex = 0; 
  },
  back:function(){
    wx.navigateBack();
    //todo:上传分数到服务器
  },
  reStartGame:function(){
    //开始一个新的定时器
    this.timer = setInterval(this.updateTime,1000);
    this.gameCore();
  },

  chooseAction:function(e){
    var opacity=e.currentTarget.dataset.opacity;
    opacity==1? this.fail():this.success();

    this.gameCore();
  },
  //更新时间的函数
  updateTime:function(){
    this.setData({
      time:--this.data.time
    });
    if (this.data.time <0){
      this.fail();
    }
  },
  //页面展示都会调用onShow函数
  onShow:function(){
    this.timer = setInterval(this.updateTime,1000);
    this.playMusic();
  },
  //退出清除缓存
  onUnload:function(){
    clearInterval(this.timer);
    this.timer = null;
    //结束音乐
    this.stopMusic();
  },
  //添加音乐 开始检测进入index页面播放 结束暂停
  playMusic:function(){
   wx.playBackgroundAudio({
     dataUrl: 'http://bmob-cdn-19171.b0.upaiyun.com/2018/05/16/ab264a6b40bdd890809bfc3dd2db575c.mp3',
     
   })
  },
  //音乐结束
  stopMusic:function(){
    wx.stopBackgroundAudio();
  }
})